package com.foton.limiter.construstlimiter.annotion;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @Author RenPu
 * @Date 2023/3/20 10:56
 * @Version 1.0
 * @Description:限流注解 模拟实现熔断器
 *
 *
 *
 **/

@Target(value = {ElementType.METHOD,ElementType.FIELD})   //注解使用的作用域，方法，类，包声名，，构造函数，方法参数吗，属性等等
@Retention(value = RetentionPolicy.RUNTIME)               //注解生效的范围 （RUNTIME）:运行期有效
@Documented                                               //生成对应的文档
public @interface FotonRateLimter {

    //设置参数，需要根据一些业务设计，统计出需要提取灵活配置的参数
    //例如：限流的注解，生成令牌的速率，超时时间，超市单位，限流的默认信息提示这些都是需要灵活配置的

    //生成令牌速率
    double tokenRate() default 10.0;

    //超时时间
    long timeout() default 500;

    //超时的时间单位
    TimeUnit timeunit() default TimeUnit.MILLISECONDS;

    //返回限流的提示信息
    String rateLimiterMsg() default "系统当前繁忙，请稍后在尝试！！！！！";



}
